From: Florian Müllner Date: Mon, 30 Aug 2010 12:59:45 +0000 (+0200) Subject: [baseIcon] Allow setting the icon size from code X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~1013^2^2~9720 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=01f4dc68b84ccf626d1088fd5f3db1081bcf952b;p=gnome-shell.git [baseIcon] Allow setting the icon size from code The current design features a sidebar where the icon size shrinks automatically to fit more items. Add a setSizeManually parameter to BaseIcon, which disables sizes read from CSS and allows to use BaseIcon.setIconSize() to support this. https://bugzilla.gnome.org/show_bug.cgi?id=625887 --- diff --git a/js/ui/iconGrid.js b/js/ui/iconGrid.js index e728caf00..b2b01930d 100644 --- a/js/ui/iconGrid.js +++ b/js/ui/iconGrid.js @@ -15,7 +15,9 @@ function BaseIcon(label, createIcon) { } BaseIcon.prototype = { - _init : function(label, createIcon) { + _init : function(label, params) { + params = Params.parse(params, { createIcon: null, + setSizeManually: false }); this.actor = new St.Bin({ style_class: 'overview-icon', x_fill: true, y_fill: true }); @@ -35,8 +37,9 @@ BaseIcon.prototype = { this._name = new St.Label({ text: label }); box.add_actor(this._name); - if (createIcon) - this.createIcon = createIcon; + if (params.createIcon) + this.createIcon = params.createIcon; + this._setSizeManually = params.setSizeManually; this.icon = this.createIcon(this.iconSize); this._iconBin.set_child(this.icon); @@ -48,17 +51,29 @@ BaseIcon.prototype = { throw new Error('no implementation of createIcon in ' + this); }, + setIconSize: function(size) { + if (!this._setSizeManually) + throw new Error('setSizeManually has to be set to use setIconsize'); + + this._setIconSize(size); + }, + + _setIconSize: function(size) { + if (size == this.iconSize) + return; + + this.icon.destroy(); + this.iconSize = size; + this.icon = this.createIcon(this.iconSize); + this._iconBin.child = this.icon; + }, + _onStyleChanged: function() { - let node = this.actor.get_theme_node(); - let [success, len] = node.get_length('icon-size', false); - if (success) { - if (len == this.iconSize) - return; - - this.icon.destroy(); - this.iconSize = len; - this.icon = this.createIcon(this.iconSize); - this._iconBin.set_child(this.icon); + if (!this._setSizeManually) { + let node = this.actor.get_theme_node(); + let [success, len] = node.get_length('icon-size', false); + if (success) + this._setIconSize(len); } } };